﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Reflection;
using System.Windows.Forms;

namespace SyringeControl
{
    /// <summary>
    /// Interface of application model.
    /// Notifies subsribers about property changes.
    /// </summary>
    public interface IViewControlModel: INotifyPropertyChanged
    {
        /// <summary>
        /// The list of control types which can be instatiated for testing
        /// </summary>
        IList<Type> Types { get; set; }
        /// <summary>
        /// Currently selected type.
        /// <see cref="IViewControlModel.TestedControl"/> should contain value of this type.
        /// </summary>
        Type SelectedType { get; set; }
        /// <summary>
        /// Currently selected assembly.
        /// <see cref="IViewControlModel.Types"/> should contain a list of valid types from this assembly
        /// </summary>
        Assembly SelectedAssembly { get; set; }
        /// <summary>
        /// Control under test.
        /// It should be an instance of <see cref="IViewControlModel.SelectedType"/>
        /// </summary>
        Control TestedControl { get; set; }
    }
}
